#include<iostream>
using namespace std;
#include<vector>

//int longestOnes(vector<int>& nums, int k) {
//    int left = 0;
//    int right = 0;
//    int length = nums.size();
//    int rlength = 0;
//    int sum = k;
//    while (right < length)
//    {
//
//        while (right < length&&sum>0)
//        {
//            if (nums[right] == 1)
//            {
//                right++;
//            }
//            else
//            {
//                right++;
//                sum--;
//            } 
//        }
//
//        if (sum == 0)
//        {
//            while (right < length && nums[right] == 1)
//            {
//                right++;
//            }
//        }
//
//        if (right == length || sum == 0)
//        {
//            if (rlength < right - left)
//            {
//                rlength = right - left;
//            }
//        }
//
//        while (left < length && sum == 0)
//        {
//            if (nums[left] == 0)
//            {
//                sum++;
//            }
//            left++;
//        }
//
//    }
//
//    return rlength;
//}
int longestOnes(vector<int>& nums, int k)
{
    int left = 0;
    int right = 0;
    int length = nums.size();
    int rlength = 0;
    while (right < length) 
    {
        while (right < length && k >= 0) 
        {
            if (nums[right] == 0) 
            {
                k--;
                right++;
            }
            else 
            {
                right++;
            }
        }

        if (k==-1) 
        {
            if (rlength < right - left-1)
            {
                rlength = right - left - 1;
            }
        }
        else
        {
            if (rlength < right - left)
            {
                rlength = right - left;
            }
        }
        while (left < length && k < 0)
        {
            if (nums[left] == 0) 
            {
                k++;
            }
            left++;
        }

    }
    return rlength;
}

int main()
{
    vector<int> arr = {1,1,0,0,0,0,1,1,1,1,1};
    int i=longestOnes(arr, 3);
    cout << i << endl;
	return 0;
}